/*
 *    Copyright (c) 2018-2025, proj All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the proj developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: proj
 */

package com.ykht.proj.activity.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 优惠方案表
 *
 * @author csg
 * @date 2021-05-18 14:26:34
 */
@Data
@TableName("v_discount_plan")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "优惠方案表")
public class VDiscountPlan extends Model<VDiscountPlan> {
private static final long serialVersionUID = 1L;

    /**
     * ID主键
     */
    @TableId
    @ApiModelProperty(value="ID主键")
    private Long id;
    /**
     * 协议ID
     */
    @ApiModelProperty(value="协议ID")
    private Long agreementId;

	@ApiModelProperty(value="品牌Id")
	private Long brandId;

	@ApiModelProperty(value="公司ID")
	private Long companyId;
    /**
     * 方案名称（计划名称）
     */
    @ApiModelProperty(value="方案名称（计划名称）")
    private String planName;
    /**
     * 方案类型  0企业优惠  1活动优惠
     */
    @ApiModelProperty(value="方案类型  0企业优惠  1活动优惠")
    private Integer planType;
    /**
     * 折扣  90代表9折
     */
    @ApiModelProperty(value="折扣  90代表9折")
    private BigDecimal discount;
    /**
     * 最低消费金额
     */
    @ApiModelProperty(value="最低消费金额")
    private BigDecimal lowMoney;
    /**
     * 方案开始时间
     */
    @ApiModelProperty(value="方案开始时间")
	@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime planStaTime;
    /**
     * 方案结束时间
     */
    @ApiModelProperty(value="方案结束时间")
	@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime planEndTime;
    /**
     * 方案状态  0 进行中  1待开始  2 已结束
     */
    @ApiModelProperty(value="方案状态  0 进行中  1待开始  2 已结束")
    private Integer planStatus;
    /**
     * 使用类型  0 全场通用  1仅那些可以使用  2 除哪些可以使用
     */
    @ApiModelProperty(value="使用类型  0 全场通用  1仅那些可以使用  2 除哪些可以使用")
    private Integer useType;
    /**
     * 使用结果（为使用类型保存字段）
     */
    @ApiModelProperty(value="使用结果（为使用类型保存字段）")
    private String useResult;
    /**
     * 使用次数类型  0 不限制次数   1限制次数 
     */
    @ApiModelProperty(value="使用次数类型  0 不限制次数   1限制次数 ")
    private Integer usageType;
    /**
     * 使用次数
     */
    @ApiModelProperty(value="使用次数")
    private Integer usageTimes;
    /**
     * 计算类型  0 门店使用计算  1品牌使用计算（品牌累计优惠次数使用完后，该品牌所有门店不可在享受优惠）
     */
    @ApiModelProperty(value="计算类型  0 门店使用计算  1品牌使用计算（品牌累计优惠次数使用完后，该品牌所有门店不可在享受优惠）")
    private Integer calculationType;
    /**
     * 预约类型 0 免预约 1要预约 
     */
    @ApiModelProperty(value="预约类型 0 免预约 1要预约 ")
    private Integer appointmentType;
    /**
     * 预约时间信息
     */
    @ApiModelProperty(value="预约时间信息")
    private String appointmentTime;
    /**
     * 适用人数
     */
    @ApiModelProperty(value="适用人数")
    private String applyPeople;
    /**
     * 适用规则
     */
    @ApiModelProperty(value="适用规则")
    private String applyRules;
    /**
     * 适用门店类型 0 全部门店 1部分门店 
     */
    @ApiModelProperty(value="适用门店类型 0 全部门店 1部分门店 ")
    private Integer applyShopType;
    /**
     * 创建人
     */
    @ApiModelProperty(value="创建人")
    private Long createUser;
    /**
     * 修改人
     */
    @ApiModelProperty(value="修改人")
    private Long updateUser;
    /**
     * 创建时间
     */
    @ApiModelProperty(value="创建时间")
    private LocalDateTime createTime;
    /**
     * 更新时间
     */
    @ApiModelProperty(value="更新时间")
    private LocalDateTime updateTime;
    /**
     *  0可用1删除 
     */
	@TableLogic
    @ApiModelProperty(value=" 0可用1删除 ")
    private Integer delFlag;
    /**
     * 租户 ID 
     */
    @ApiModelProperty(value="租户 ID ",hidden=true)
    private Integer tenantId;
    }
